package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.Funcao;
import br.com.condominio.service.FuncaoService;

@ViewScoped
@ManagedBean(name = "funcaoBean")
public class FuncaoBean extends BaseBean{
	
	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{funcaoService}")
	private FuncaoService model;
	private Funcao funcao;
	private List<Funcao> funcaos;
	private String nomeFuncao;
	private boolean editMode;
	
	public FuncaoBean() {
		funcao = new Funcao();
	}

	public FuncaoService getModel() {
		return model;
	}

	public void setModel(FuncaoService model) {
		this.model = model;
	}

	public Funcao getFuncao() {
		return funcao;
	}

	public void setFuncao(Funcao funcao) {
		this.funcao = funcao;
	}
	
	public void salvar(){
		System.out.println("idf funcao " +funcao.getFuncCodigo());
		if(funcao.getFuncCodigo() == null || funcao.getFuncCodigo().intValue() == 0){
			funcao = model.persistFuncao(funcao);
			funcao = new Funcao();
			addInfoMessage("Funcao criado com sucesso.");
		}else{
			model.updateFuncao(funcao);
			addInfoMessage("Funcao alterado com sucesso.");
		}
	}
	
	public void delete(){
		model.deleteFuncao(funcao);
		if(nomeFuncao != null && !nomeFuncao.isEmpty())
			funcaos = model.getFuncaosByName(nomeFuncao);
		else
			funcaos = model.getAllFuncaos();
		
		//return "";
	}

	public void create(){
		this.funcao = new Funcao();
		this.editMode = true;
	}
	
	public void update(){
		this.editMode = true;
	}
	
	public void cancel(){
		this.editMode = false;
	}

	public void filtrarFuncao(AjaxBehaviorEvent event){
		if(nomeFuncao != null && !nomeFuncao.isEmpty()){
			funcaos = model.getFuncaosByName(nomeFuncao);
		}else{
			funcaos = model.getAllFuncaos();
		}
	}

	public List<Funcao> getFuncaos() {
		if(funcaos == null){
			funcaos = model.getAllFuncaos();
		}
		return funcaos;
	}

	public void setFuncaos(List<Funcao> funcaos) {
		this.funcaos = funcaos;
	}

	public String getNomeFuncao() {
		return nomeFuncao;
	}

	public void setNomeFuncao(String nomeFuncao) {
		this.nomeFuncao = nomeFuncao;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}
}
